package com.tim.source.db;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class DataTypeProc {
	// 无长度类型.
	private static String noLengthList = null;
	// 导入的java类列表.
	private List<String> packageList = new ArrayList<String>();
	private static Properties properties;
	static {
		InputStream stream = DataTypeProc.class
				.getResourceAsStream("datatype.properties");
		properties = new Properties();
		try {
			properties.load(stream);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 是否为无长度限制类型.
	 * 
	 * @param type
	 *            java数据类.
	 * @return 是否为非长度类型.
	 */
	public static boolean isNoLengthList(String type) {
		if (noLengthList == null) {
			noLengthList = properties.getProperty("nolength");
		}
		return noLengthList.indexOf(type) != -1;
	}

	/**
	 * 获取对应数据库的java类型.
	 * 
	 * @param dbType
	 *            数据库Key.
	 * @param sqlDataType
	 *            数据库列类型.
	 * @return String 对应java类型.
	 */
	public String getDataType(String dbType, String sqlDataType) {
		try {
			InputStream stream = DataTypeProc.class
					.getResourceAsStream("datatype.properties");
			properties.load(stream);
			// 获取类型对应的java类型
			String dataType = properties.getProperty(sqlDataType);
			if (dataType == null || "".equals(dataType)) {
				dataType = properties.getProperty(dbType + "." + sqlDataType);
			}
			if (!packageList.contains(dataType)) {
				packageList.add(dataType);
			}
			return dataType;
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

	/**
	 * 获取所包含的java类列表.
	 * 
	 * @return List<String> java类列表.
	 */
	public List<String> getPackageList() {
		return this.packageList;
	}
}
